var Utils= require('./Utils.js')
var utils_yys = require('./utils.yys.js')

sleep(5000)
Utils.init()

var yys_obj

yys_obj = utils_yys.getYysInfo()

let jiejie_arr = ['结界一','结界二','结界三','结界四','结界五','结界六','结界七','结界八','结界九']
let zhenrong_arr = ['阵容一','阵容二','阵容三']
let 结界列表界面_flag = 准备界面_flag = 预设界面_flag = 出战界面_flag = false
let stop = true
let flag = false
let zhenrong_index = 0  // 使用阵容一
let num = 0 // 第几次突破该结界
let jj_now  // 当前突破的结界
while(jiejie_arr.length>0){
    Utils.sleeps()
    if(结界列表界面_flag || Utils.isContains(['结界突破','防守记录','刷新','阵容'])){
        log('结界列表界面：成功')
        if(!结界列表界面_flag){
            结界列表界面_flag = true
            clickJiejie()
            log('剩余结界：'+jiejie_arr.length)
            log(jiejie_arr)
            jiejie_arr.length === 0? jiejie_arr = ['结界一','结界二','结界三','结界四','结界五','结界六','结界七','结界八','结界九']:'' // 结界为0时重新开始
            Utils.ranWaitTime(8, 12)
        }
        if(准备界面_flag || Utils.isContain('点击式神区域')){
            log('第 ' + (num+1) + ' 次进攻')
            log('准备界面：成功')
            if(!准备界面_flag){
                准备界面_flag = true
                utils_yys.isClick(yys_obj.其他.预设)? log('点击预设：成功'):log('点击预设：失败')
                sleep(random(1500, 3000))
            }
            if(出战界面_flag || Utils.isContain('出战')){
                log('出战界面：成功')
                if(!出战界面_flag){
                    出战界面_flag = true
                    utils_yys.isClick(yys_obj.其他.预设[zhenrong_arr[zhenrong_index]])? log('点击阵容：成功'):log('点击阵容：失败')
                    sleep(random(1000, 1500))
                    utils_yys.isClick(yys_obj.其他.预设.出战)
                    sleep(random(1500, 3000))
                    utils_yys.isClick(yys_obj.其他.准备)
                    Utils.waitTime(random(60, 70))
                }
            }else{
                log('出战界面：失败')
            }
            if(出战界面_flag){
                Utils.waitTime(random(6,10))
                /*************** 点击左中间空白 start ***************/
                /*
                 * 第一次：点击胜利界面
                 * 第二次：结界点是 3、6、9 时点击奖励界面
                 * 第三次：多点击一次防止前面两次有点击失效
                 */
                for(let i=1; i<=random(3,5); i++){
                    utils_yys.isClick(yys_obj.突破.结界.左中间空白)
                    log('点击左中间空白：第' + i + '次')
                    Utils.sleeps()
                }
                /*************** 点击左中间空白 end ***************/
                if(Utils.isContains(['结界突破','防守记录','刷新','阵容'])){
                    log('返回结界列表界面：成功')
                    let posi = yys_obj.突破.结界[jj_now]
                    utils_yys.isClick(posi)
                    Utils.sleeps()
                    if(Utils.isContains(['消耗','进攻'])){
                        if(num !== 2){
                            utils_yys.isClick(posi.进攻)
                            num++
                            switch (num) {
                                case 1:
                                    zhenrong_index = 1
                                    break
                                case 2:
                                    zhenrong_index = 2
                            }
                            准备界面_flag = 出战界面_flag = false
                        }else{
                            log('该结界攻打 3 次未过')
                            exit()
                        }
                    }else{
                        结界列表界面_flag = 准备界面_flag = 出战界面_flag = false
                        num = 1
                        zhenrong_index = 0
                    }
                }else{
                    log('返回结界列表界面：失败')
                }
            }
        }else{
            log('准备界面：失败')
        }
    }else{
        log('结界列表界面：失败')
    }
}

/**
 * @description 点击结界并进攻
 */
function clickJiejie(){
    var flag = false
    let len = jiejie_arr.length
    let jj_temp
    if(len>0){
        jj_temp = jj_now = jiejie_arr[random(0,len-1)]
        log('当前:'+jj_temp)
        let posi = yys_obj.突破.结界[jj_temp]
        let flag_temp = utils_yys.isClick(posi)
        sleep(random(1000,1500))
        jiejie_arr.remove(jj_temp)
        flag = flag_temp && Utils.isContains(['消耗','进攻'])? utils_yys.isClick(posi.进攻):clickJiejie()
        Utils.sleeps()
        Utils.isContains(['消耗','进攻'])? (log('结界挑战券不足'),exit()):''
    }
    return flag
}
